package com.xfp.service;

import com.xfp.pojo.dto.CancelTaskDto;
import com.xfp.pojo.dto.TaskInfoDto;
import com.xfp.pojo.dto.TaskQueryDto;
import com.xfp.pojo.entity.AlertValue;
import com.xfp.pojo.entity.TaskDetails;
import com.xfp.pojo.entity.TaskStatusType;
import com.xfp.pojo.entity.TaskType;
import com.xfp.pojo.vo.*;

import java.util.List;

public interface TaskService {
    /**
     * 统计工单状态
     * @param start
     * @param end
     * @return
     */
    List<CollectReportVo> collectReport(String start, String end);

    /**
     * 获取当时go
     * @param start
     * @param end
     * @return
     */
    List<TaskReportInfoVo> taskReportInfo(String start, String end);

    /**
     * 工单搜索
     * @param dto
     * @return
     */
    TaskQueryVo taskSearch(TaskQueryDto dto);

    /**
     * 工单状态列表
     * @return
     */
    List<TaskStatusType> allTaskStatus();

    /**
     * 获取所有工单类型
     * @return
     */
    List<TaskType> taskTypeList();

    /**
     * 根据工单id获取工单详情
     * @param taskId
     * @return
     */
    TaskInfoVo taskInfo(Long taskId);

    /**
     * 补货详情
     * @param taskId
     * @param dto
     * @return
     */
    List<TaskDetails> taskDetails(Long taskId, TaskInfoDto dto);

    /**
     * 设置自动补货工单阈值
     * @param alertValue
     */
    void autoSupplyConfig(AlertValue alertValue);

    /**
     * 获取预警值
     * @return
     */
    Integer getAlertValue();

    /**
     * 取消工单
     * @param taskId
     * @param dto
     */
    void cancelTask(Integer taskId, CancelTaskDto dto);

    /**
     * 创建工单
     * @param dto
     */
    void createTask(TaskInfoDto dto);
}
